package misc;

import edu.uci.ics.jung.graph.DirectedGraph;
import java.util.ArrayList;
import model.Aluno;
import model.Popularidade;

public class Printing {
    
    public void imprimir_lista_rm(ArrayList<Integer> lista_rm) {
        for(Integer i : lista_rm) {
            System.out.println(String.valueOf(i));
        }
    }
    
    public void imprimir_alunos_rm(ArrayList<Aluno> alunos_rm) {
        for (Aluno a : alunos_rm) {
            System.out.println("\n\nRM: " + a.getRm());
            Integer[] conexoes_rm = a.getConexoes_rm();
            System.out.print("Conexões: ");
            for(Integer i : conexoes_rm) {
                if(i != 0) {
                    System.out.print(String.valueOf(i) + " ");
                }
            }
        }
    }
    
    public void imprimir_alunos_nome(ArrayList<Aluno> alunos_nome) {
        for(Aluno a : alunos_nome) {
            System.out.println("\n\nNome: " + a.getNome());
            String[] conexoes_nome = a.getConexoes_nome();
            System.out.print("Conexões: ");
            String conexoes = "";
            for(String s : conexoes_nome) {
                if(!("".equals(s))) {
                    conexoes += s + " - ";
                }
            }
            if(conexoes.length() > 3) {
                conexoes = conexoes.substring(0, conexoes.length() - 3);
            }
            System.out.print(conexoes);
        }
    }
    
    public void imprimir_grafo(DirectedGraph g) {
        if(g != null) {
            String grafo = g.toString();
            for(int k = 0 ; k < grafo.length() ; k++) {
                if(k < grafo.length() - 9 && "Vertices:".equals(grafo.substring(k, k+9))) {
                    grafo = grafo.substring(0, k + 9) + "\n" + grafo.substring(k+9, grafo.length());
                }
                else if(k < grafo.length() - 6 && "Edges:".equals(grafo.substring(k, k+6))) {
                    grafo = grafo.substring(0, k + 6) + "\n" + grafo.substring(k+6, grafo.length());
                }
            }
            int cont = 0;
            for(int k = 0 ; k < grafo.length() ; k++) {
                System.out.print(grafo.charAt(k));
                if(k < grafo.length() - 5 && grafo.substring(k+1, k+5).equals("Edge")) {
                    if(cont == 10) {
                        System.out.println();
                        cont = 0;
                    }
                    cont++;
                }
            }
        }
    }
    
    public void imprimir_popularidade(ArrayList<Popularidade> popularidade) {
        for(Popularidade p : popularidade) {
            System.out.println("\nAluno: " + p.getAluno().getNome() + " | Popularidade: " + String.valueOf(p.getApontamentos()));
        }
    }
    
    public void imprimir_aluno_distancia(ArrayList<String> aluno_distancia) {
        for(String s : aluno_distancia) {
            System.out.println(s);
        }
    }
}
